package com.link.base.base.report.service;

import com.link.base.base.report.model.*;
import com.link.base.base.report.model.*;

import java.util.List;
import java.util.Map;


/**
 * @author unknown
 * @date unknown
 * @comments 报表
 */
public interface PortalReportService {
    /**
     * 客户类型报表
     * @param acctTypeReport
     * @return List PortalAccountTypeReport
     * @throws Exception
     */
    public List<PortalAccountTypeReport> queryAccntTypeReport(PortalAccountTypeReport acctTypeReport) throws Exception;

    /**
     * 根据客户负责人统计客户类型报表
     * @param acctTypeReport
     * @return List PortalAccountTypeReport
     * @throws Exception
     */
    public List<PortalAccountTypeReport> queryAccntTypeReportByPostn(PortalAccountTypeReport acctTypeReport) throws Exception;


    /**
     * 商机Top10报表
     * @param optyTop10Report
     * @return List PortalOptyTop10Report
     * @throws Exception
     */
    public List<PortalOptyTop10Report> queryOptyTop10Report(PortalOptyTop10Report optyTop10Report) throws Exception;

    /**
     * 商机阶段-销售漏斗
     * @param params
     * @return List PortalOptyStageReport
     * @throws Exception
     */
    public List<PortalOptyStageReport> queryOptyStageReport(PortalSearchText params) throws Exception;

    /**
     * 查询
     * @param rs
     * @return List PortalBaseDataReport
     * @throws Exception
     */
    public List<PortalBaseDataReport> queryReport(PortalReportSearch rs) throws Exception;

    /**
     * 查询销售额
     * @param salesAmount
     * @return List PortalSalesAmount
     * @throws Exception
     */
    public List<PortalSalesAmount> querySalesAmountReport(PortalSalesAmount salesAmount) throws Exception;

    /**
     * 查询年期间销售金额
     * @param salesAmount
     * @return List PortalSalesAmount
     * @throws Exception
     */
    public List<PortalSalesAmount> queryYearPeriodSales(PortalSalesAmount salesAmount) throws Exception;


    /**
     * 查询商品销售
     * @param prodSalesReport
     * @return List PortalProductSalesReport
     * @throws Exception
     */
    public List<PortalProductSalesReport> queryProductSalesReport(PortalProductSalesReport prodSalesReport) throws Exception;

    /**
     * 消费者渠道构成报表
     * @param record
     * @return List PortalConsumerSourceConstitute
     * @throws Exception
     */
    public List<PortalConsumerSourceConstitute> queryConsumerSourceConstitute(PortalConsumerSourceConstitute record) throws Exception;

    /**
     * 消费者渠道增长趋势报表
     * @param record
     * @return map
     * @throws Exception
     */
    public Map<String, Object> queryConsumerSourceGrowth(PortalConsumerSourceConstitute record) throws Exception;
}
